package br.com.javamagazine.javalbergue.aplicacao;

import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.javamagazine.javalbergue.dominio.Hospede;

@Stateless
@LocalBean
public class AplCadastro implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@PersistenceContext
	private EntityManager entityManager;
	
	public void cadastrar(Hospede hospede) throws HospedeMenorDeIdadeException{
		int idade = calcularIdade(hospede.getDataNascimento());
		if(idade < 18) throw new HospedeMenorDeIdadeException(idade);
		entityManager.persist(hospede);
	}

	private static int calcularIdade(Date dataNascimento){
		if(dataNascimento == null) return 0;
		Calendar nascimento = Calendar.getInstance();
		nascimento.setTime(dataNascimento);
		Calendar hoje = Calendar.getInstance();
		hoje.setTime(new Date(System.currentTimeMillis()));
		int idade = hoje.get(Calendar.YEAR) - nascimento.get(Calendar.YEAR);
		nascimento.add(Calendar.YEAR, idade);
		if(nascimento.after(hoje)) idade --;
		return idade;
	}
}
